package com.xbongbong.saas.service;

import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.paas.toolbox.wrap.BaseVO;
import com.xbongbong.pro.appdetail.pojo.dto.SignInDetailDTO;
import com.xbongbong.pro.appdetail.pojo.vo.SignInDetailVO;
import com.xbongbong.pro.applist.pojo.dto.SignInTrackDTO;
import com.xbongbong.pro.applist.pojo.vo.SignInStatisticVO;
import com.xbongbong.pro.webexport.dto.SignInExportDTO;
import com.xbongbong.pro.webexport.vo.SignInExportVO;
import com.xbongbong.pro.weblist.pojo.dto.SignInDTO;
import com.xbongbong.pro.weblist.pojo.dto.SignInDeleteDTO;
import com.xbongbong.pro.weblist.pojo.dto.SignInSaveDTO;
import com.xbongbong.pro.weblist.pojo.dto.SignInStatisticDTO;
import com.xbongbong.pro.weblist.pojo.vo.SignInListVO;

/**
 * @author haibin.zhang
 * @version v1.0
 * @date 2019/4/1 12:23
 * @since v1.0
 */
public interface SignInService {

    /**
     * web签到列表
     *
     * @param signInDTO 入参
     * @return SignInListVO
     * @throws XbbException XbbException
     * @author GuoJun.HU
     * @date 2019/4/10 14:48
     * @since V1.0
     */
    SignInListVO list(SignInDTO signInDTO) throws XbbException;

    /**
     * web导出签到列表
     *
     * @param signInExportDTO 入参
     * @return SignInListVO
     * @throws XbbException XbbException
     * @author GuoJun.HU
     * @date 2019/4/10 14:48
     * @since V1.0
     */
    SignInExportVO exportList(SignInExportDTO signInExportDTO) throws XbbException;

    /**
     * 移动端签到统计
     *
     * @param signInStatisticDto 入参
     * @return SignInStatisticsVO
     * @throws XbbException XbbException
     * @author GuoJun.HU
     * @date 2019/4/10 14:49
     * @since V1.0
     */
    SignInStatisticVO signInStatistic(SignInStatisticDTO signInStatisticDto) throws XbbException;

    /**
     * app签到列表 地图显示
     * 客户签到列表
     *
     * @param signInDTO 入参
     * @return SignInListVO
     * @throws XbbException XbbException
     * @author GuoJun.HU
     * @date 2019/4/10 14:48
     * @since V1.0
     */
    SignInListVO signInCustomerList(SignInDTO signInDTO) throws XbbException;

    /**
     * 签到保存
     *
     * @param signInSaveDTO 保存数据
     * @return BaseVO
     * @throws XbbException XbbException
     * @author GuoJun.HU
     * @date 2019/4/12 11:32
     * @since V1.0
     */
    BaseVO save(SignInSaveDTO signInSaveDTO) throws XbbException;

    /**
     * 签到删除
     *
     * @param signInDeleteDTO 保存数据
     * @return BaseVO
     * @throws XbbException XbbException
     * @author XuBin
     * @date 2020/5/19 15:14
     * @since V1.0
     */
    BaseVO delete(SignInDeleteDTO signInDeleteDTO) throws XbbException;

    /**
     * 签到轨迹
     *
     * @param signInTrackDTO 签到轨迹入参
     * @return SignInListVO
     * @throws XbbException XbbException
     * @author GuoJun.HU
     * @date 2019/4/19 9:23
     * @since V1.0
     */
    SignInListVO track(SignInTrackDTO signInTrackDTO) throws XbbException;

    /**
     * 获取签到详情
     *
     * @param signInDetailDTO 获取详情入参
     * @throws XbbException XbbException
     * @author GuoJun.HU
     * @since V1.0
     * @return SignInDetailVO
     * @date 2019/4/19 11:00
     */
    SignInDetailVO detail(SignInDetailDTO signInDetailDTO) throws XbbException;
}
